On Jan 29, 2013, at 3:46 AM, Dragony <csch...@rapidshare.com> wrote:
> I want to get the device size of /dev/sda. I have an open fd and a UnixStream

Don't use UnixStream.Length here; UnixStream.Length uses the stat(2) system 
call, which states:

http://linux.die.net/man/2/stat
> The st_size field gives the size of the file (if it is a regular file or a 
> symbolic link) in bytes. The size of a symbolic link is the length of the 
> pathname it contains, without a terminating null byte.


You should instead use Syscall.fstatvfs() and Statvfs:

        
http://docs.go-mono.com/index.aspx?link=M%3aMono.Unix.Native.Syscall.fstatvfs(System.Int32%2cMono.Unix.Native.Statvfs%40)
        http://docs.go-mono.com/index.aspx?link=T%3aMono.Unix.Native.Statvfs%2f*

For example:

        Statvfs stat;
        int r = Syscall.fstatvfs (fd, out stat);
        int filesystem_size = stat.f_blocks*stat.f_frsize;

 - Jon

_______________________________________________
Mono-list maillist  -  Mono-list@lists.ximian.com
http://lists.ximian.com/mailman/listinfo/mono-list

Reply via email to