- fix readdir vs fragment race by keeping a separate frag pos, and ignoring dentries below it
kernel client
-- statfs fsid should xor the ceph_fsid hi/low words
- async writepages?
- we want to saturate network with writeback on a single file
-- add i_frag_mutex to protect the frag tree..
- - get rid of ugly i_lock vs kmalloc juggling in get_or_create_frag
-- fsync on dir? what is that supposed to do?
- make writepages maybe skip pages with errors?
- EIO, or ENOSPC?
- ... writeback vs ENOSPC vs flush vs close()... hrm...
static int ceph_statfs(struct dentry *dentry, struct kstatfs *buf)
{
struct ceph_client *client = ceph_inode_to_client(dentry->d_inode);
+ struct ceph_monmap *monmap = client->monc.monmap;
struct ceph_statfs st;
+ __le64 fsid;
int err;
dout(30, "ceph_statfs\n");
buf->f_bavail = st.f_avail >> (CEPH_BLOCK_SHIFT-10);
buf->f_files = st.f_objects;
buf->f_ffree = -1;
- /* fsid? */
buf->f_namelen = PATH_MAX;
buf->f_frsize = 4096;
+ fsid = monmap->fsid.major ^ monmap->fsid.minor;
+ buf->f_fsid.val[0] = fsid & 0xffffffff;
+ buf->f_fsid.val[1] = fsid >> 32;
+
return 0;
}