samba-technical@lists.samba.org
[Top] [All Lists]

Re: [PATCH 3/3] Add a pair of system calls to make extended file stats a

Subject: Re: [PATCH 3/3] Add a pair of system calls to make extended file stats available [ver #2]
From: Nicholas Miell
Date: Tue, 29 Jun 2010 19:32:41 -0700
On Wed, 2010-06-30 at 02:17 +0100, David Howells wrote:
> Add a pair of system calls to make extended file stats available, including
> file creation time, inode version and data version where available through the
> underlying filesystem:
> 
>       struct xstat_dev {
>               unsigned int    major;
>               unsigned int    minor;
>       };
> 
>       struct xstat_time {
>               unsigned long long      tv_sec;
>               unsigned long long      tv_nsec;
>       };
> 
>       struct xstat {
>               unsigned int            struct_version;
>       #define XSTAT_STRUCT_VERSION    0
>               unsigned int            st_mode;
>               unsigned int            st_nlink;
>               unsigned int            st_uid;
>               unsigned int            st_gid;
>               unsigned int            st_blksize;
>               struct xstat_dev        st_rdev;
>               struct xstat_dev        st_dev;
>               unsigned long long      st_ino;
>               unsigned long long      st_size;
>               struct xstat_time       st_atime;
>               struct xstat_time       st_mtime;
>               struct xstat_time       st_ctime;
>               struct xstat_time       st_btime;
>               unsigned long long      st_blocks;
>               unsigned long long      st_gen;
>               unsigned long long      st_data_version;
>               unsigned long long      query_flags;
>       #define XSTAT_QUERY_SIZE                0x00000001ULL
>       #define XSTAT_QUERY_NLINK               0x00000002ULL
>       #define XSTAT_QUERY_AMC_TIMES           0x00000004ULL
>       #define XSTAT_QUERY_CREATION_TIME       0x00000008ULL
>       #define XSTAT_QUERY_BLOCKS              0x00000010ULL
>       #define XSTAT_QUERY_INODE_GENERATION    0x00000020ULL
>       #define XSTAT_QUERY_DATA_VERSION        0x00000040ULL
>               unsigned long long      extra_results[0];
>       };
> 

unsigned long long inside a struct has 4 byte alignment on x86, while
AMD64 has 8 byte alignment. This struct layout isn't affected by the
difference, but that's something to keep in mind.
-- 
Nicholas Miell <nmiell@xxxxxxxxxxx>

<Prev in Thread] Current Thread [Next in Thread>