diff options
author | Sage Weil <sage@newdream.net> | 2010-08-22 15:03:56 -0700 |
---|---|---|
committer | Sage Weil <sage@newdream.net> | 2010-08-22 15:16:46 -0700 |
commit | 4a625be47243e0e07dedd0a1a6b94c66c2ab93ba (patch) | |
tree | 4224efef4f83bcf629934d6da17d2c122b49ba5c /fs/ceph/super.h | |
parent | 082afec92d1052305af1195f591602f4d0f44277 (diff) | |
download | blackbird-op-linux-4a625be47243e0e07dedd0a1a6b94c66c2ab93ba.tar.gz blackbird-op-linux-4a625be47243e0e07dedd0a1a6b94c66c2ab93ba.zip |
ceph: include dirty xattrs state in snapped caps
When we snapshot dirty metadata that needs to be written back to the MDS,
include dirty xattr metadata. Make the capsnap reference the encoded
xattr blob so that it will be written back in the FLUSHSNAP op.
Also fix the capsnap creation guard to include dirty auth or file bits,
not just tests specific to dirty file data or file writes in progress
(this fixes auth metadata writeback).
Signed-off-by: Sage Weil <sage@newdream.net>
Diffstat (limited to 'fs/ceph/super.h')
-rw-r--r-- | fs/ceph/super.h | 8 |
1 files changed, 5 insertions, 3 deletions
diff --git a/fs/ceph/super.h b/fs/ceph/super.h index 2482d696f0de..b33929d8f287 100644 --- a/fs/ceph/super.h +++ b/fs/ceph/super.h @@ -216,8 +216,7 @@ struct ceph_cap_snap { uid_t uid; gid_t gid; - void *xattr_blob; - int xattr_len; + struct ceph_buffer *xattr_blob; u64 xattr_version; u64 size; @@ -229,8 +228,11 @@ struct ceph_cap_snap { static inline void ceph_put_cap_snap(struct ceph_cap_snap *capsnap) { - if (atomic_dec_and_test(&capsnap->nref)) + if (atomic_dec_and_test(&capsnap->nref)) { + if (capsnap->xattr_blob) + ceph_buffer_put(capsnap->xattr_blob); kfree(capsnap); + } } /* |