ceph: Update max_len with minimum required size
authorAneesh Kumar K.V <aneesh.kumar@linux.vnet.ibm.com>
Tue, 5 Oct 2010 10:33:42 +0000 (16:03 +0530)
committerSage Weil <sage@newdream.net>
Thu, 7 Oct 2010 15:00:24 +0000 (08:00 -0700)
encode_fh on error should update max_len with minimum required
size, so that caller can redo the call with the reallocated buffer.
This is required with open by handle patch series

Signed-off-by: Aneesh Kumar K.V <aneesh.kumar@linux.vnet.ibm.com>
Signed-off-by: Sage Weil <sage@newdream.net>
fs/ceph/export.c

index 387c5823944eddc95d2b99fe14e55547f80ef83e..e38423e82f2ebe3f311a3f173964181c5ebe1860 100644 (file)
@@ -62,13 +62,16 @@ static int ceph_encode_fh(struct dentry *dentry, u32 *rawfh, int *max_len,
                *max_len = connected_handle_length;
                type = 2;
        } else if (*max_len >= handle_length) {
-               if (connectable)
+               if (connectable) {
+                       *max_len = connected_handle_length;
                        return 255;
+               }
                dout("encode_fh %p\n", dentry);
                fh->ino = ceph_ino(dentry->d_inode);
                *max_len = handle_length;
                type = 1;
        } else {
+               *max_len = handle_length;
                return 255;
        }
        return type;