Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
E
elphel-web-393
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Wiki
Wiki
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Commits
Issue Boards
Open sidebar
Elphel
elphel-web-393
Commits
f0f64cbc
Commit
f0f64cbc
authored
Dec 02, 2016
by
Oleg Dzhimiev
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
work with disk devices
parent
36e20c2f
Changes
3
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
126 additions
and
5 deletions
+126
-5
eyesis4pi_interface.php
src/eyesis4pi/eyesis4pi_interface.php
+18
-4
Makefile
src/php_top/Makefile
+2
-1
devices.php
src/php_top/devices.php
+106
-0
No files found.
src/eyesis4pi/eyesis4pi_interface.php
View file @
f0f64cbc
...
...
@@ -21,6 +21,7 @@
*/
include
'include/response.php'
;
include
'include/devices.php'
;
$cmd
=
"donothing"
;
if
(
isset
(
$_GET
[
'cmd'
]))
...
...
@@ -31,6 +32,7 @@ else if (isset($argv[1]))
#hardcoded for eyesis4pi
$symlink
=
"/www/pages/ssd"
;
$mountpoint
=
"/mnt/sda1"
;
$camogmdisk
=
"/home/root/camogm.disk"
;
switch
(
$cmd
){
case
"symlink"
:
...
...
@@ -38,13 +40,25 @@ switch($cmd){
die
(
symlink
(
$mountpoint
,
$symlink
));
break
;
case
"free_space"
:
if
(
$_GET
[
'mountpoint'
]
==
"/mnt/sda2"
){
// /dev/sda2 is not a mountpoint but a device because it does not have a file system
if
(
$_GET
[
'mountpoint'
]
==
"/dev/sda2"
){
//root@elphel393:~# cat /home/root/camogm.disk
//Device Start LBA Current LBA End LBA
///dev/sda2 195334335 545641716 976768065
if
(
!
is_file
(
$camogmdisk
)){
}
else
{
}
respond_xml
(
"test"
);
//unpartitioned area
}
else
{
if
(
is_dir
(
$mountpoint
))
$res
=
disk_free_space
(
$mountpoint
);
else
$res
=
0
;
respond_xml
(
$res
);
if
(
is_dir
(
$mountpoint
))
$res
=
disk_free_space
(
$mountpoint
);
else
$res
=
0
;
respond_xml
(
$res
);
}
break
;
default
:
...
...
src/php_top/Makefile
View file @
f0f64cbc
...
...
@@ -22,7 +22,8 @@ PHP_SCRIPTS=i2c.php \
PHPINCLUDES
=
i2c_include.php
\
show_source_include.php
\
parallel_requests.php
\
response.php
response.php
\
devices.php
all
:
@
echo
"make all in src"
...
...
src/php_top/devices.php
0 → 100644
View file @
f0f64cbc
<?php
/*
*!***************************************************************************
*! FILE NAME : devices.php
*! DESCRIPTION: get devices info
*! Copyright (C) 2016 Elphel, Inc.
*! --------------------------------------------------------------------------
*! This program is free software: you can redistribute it and/or modify
*! it under the terms of the GNU General Public License as published by
*! the Free Software Foundation, either version 3 of the License, or
*! (at your option) any later version.
*!
*! This program is distributed in the hope that it will be useful,
*! but WITHOUT ANY WARRANTY; without even the implied warranty of
*! MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
*! GNU General Public License for more details.
*!
*! You should have received a copy of the GNU General Public License
*! along with this program. If not, see <http://www.gnu.org/licenses/>.
*! --------------------------------------------------------------------------
*/
/** Get a list of suitable partitions. The list will contain SATA devices only and
* will have the following format: "name" => "size_in_blocks".
*/
function
get_partitions
()
{
$names
=
array
();
$regexp
=
'/([0-9]+) +(sd[a-z0-9]+$)/'
;
exec
(
"cat /proc/partitions"
,
$partitions
);
// the first two elements of an array are table header and empty line delimiter, skip them
for
(
$i
=
2
;
$i
<
count
(
$partitions
);
$i
++
)
{
// select SATA devices only
if
(
preg_match
(
$regexp
,
$partitions
[
$i
],
$name
)
==
1
)
{
$names
[
$name
[
2
]]
=
$name
[
1
];
$j
++
;
}
}
return
$names
;
}
/** Get a list of disk devices which have file system and can be mounted. This function
* uses 'blkid' command from busybox.
*/
function
get_mnt_dev
()
{
$partitions
=
get_partitions
();
$devices
=
array
();
$fs_types
=
array
();
foreach
(
$partitions
as
$partition
=>
$size
)
{
$res
=
array
();
$dev
=
"/dev/"
.
$partition
;
exec
(
"blkid "
.
$dev
,
$res
);
if
(
!
empty
(
$res
))
{
$devices
[
$i
]
=
preg_replace
(
'/: +.*/'
,
""
,
$res
[
0
]);
if
(
preg_match
(
'/(?<=TYPE=")[a-z0-9]+(?=")/'
,
$res
[
0
],
$fs
)
==
1
)
$fs_types
[
$i
]
=
$fs
[
0
];
else
$fs_types
[
$i
]
=
"none"
;
$i
++
;
}
}
return
array
(
"devices"
=>
$devices
,
"types"
=>
$fs_types
);
}
/** Get a list of devices whithout file system which can be used for raw disk storage from camogm. */
function
get_raw_dev
()
{
$j
=
0
;
$ret
=
get_mnt_dev
();
$devices
=
$ret
[
"devices"
];
$types
=
$ret
[
"types"
];
$names
=
get_partitions
();
// filter out partitions with file system
$i
=
0
;
$raw_devices
=
array
();
foreach
(
$names
as
$name
=>
$size
)
{
$found
=
false
;
foreach
(
$devices
as
$device
)
{
if
(
strpos
(
$device
,
$name
)
!==
false
)
$found
=
true
;
}
if
(
$found
===
false
)
{
// current partition is not found in the blkid list, add it to raw devices
$raw_devices
[
"/dev/"
.
$name
]
=
$size
;
$i
++
;
}
}
//special case
if
(
count
(
$raw_devices
)
>
1
)
{
foreach
(
$raw_devices
as
$k
=>
$v
){
if
(
preg_match
(
'/sd[a-z][0-9]/'
,
$k
)
==
0
)
{
unset
(
$raw_devices
[
$k
]);
}
}
}
return
$raw_devices
;
}
?>
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment