Hi Daobing, Thanks for such a detailed observation. Your suggestion holds good other than for all the stats 'st_ino' field should be from namespace node. The respective code is committed now. (patch-636) Thanks, Amar On Jan 10, 2008 8:21 AM, LI Daobing <lidaobing@xxxxxxxxx> wrote: > Hello, > > this letter is relative with the last letter post by me in [1] > [1] http://tinyurl.com/2lsa24 > > unify adopt 4 schemes to return struct stat* in 18 functions. > > 1. struct stat* is returned from the data node: readv, writev st_ino is not required as the stat returned here is not used by fuse layer. > > 2. struct stat* is returned from the NS node: mknod, mkdir, symlink, > link, create Mainly used for st_ino > > 3. most part of struct stat* is returned from the NS node, but mtime, > st_size, st_blocks is returned from data node: lookup, stat, fstat, > fchmod, fchown, ftruncate just returning st_ino from NS node, and other from storage node is enough. > > 4. if it's a directory, return struct stat* from the NS node, > otherwise same with 3: chmod, chown, truncate, utimens, rename > (I don't know whether I have made mistake in this paragraph, :) ) > I can see all your observations are right. > > Hmm, the unstable returned time will make vim give a warning (as I > descripted in last letter). So I propose another scheme for returning > struct stat*: > > 1. if it's a file: return struct stat* from the data node st_ino should be from NS node. > > 2. if it's a dir: return struct stat* from the NS node > > > under this scheme, at least the returned stat* can be stable. > > Any comment or suggestion? Thanks. > > -- > Best Regards, > LI Daobing > > -- Amar Tumballi Gluster/GlusterFS Hacker [bulde on #gluster/irc.gnu.org] http://www.zresearch.com - Commoditizing Supercomputing and Superstorage!