diff options
Diffstat (limited to 'fs/btrfs/export.c')
| -rw-r--r-- | fs/btrfs/export.c | 10 |
1 files changed, 8 insertions, 2 deletions
diff --git a/fs/btrfs/export.c b/fs/btrfs/export.c index 9786963b07e..b4ffad859ad 100644 --- a/fs/btrfs/export.c +++ b/fs/btrfs/export.c | |||
| @@ -21,9 +21,13 @@ static int btrfs_encode_fh(struct dentry *dentry, u32 *fh, int *max_len, | |||
| 21 | int len = *max_len; | 21 | int len = *max_len; |
| 22 | int type; | 22 | int type; |
| 23 | 23 | ||
| 24 | if ((len < BTRFS_FID_SIZE_NON_CONNECTABLE) || | 24 | if (connectable && (len < BTRFS_FID_SIZE_CONNECTABLE)) { |
| 25 | (connectable && len < BTRFS_FID_SIZE_CONNECTABLE)) | 25 | *max_len = BTRFS_FID_SIZE_CONNECTABLE; |
| 26 | return 255; | 26 | return 255; |
| 27 | } else if (len < BTRFS_FID_SIZE_NON_CONNECTABLE) { | ||
| 28 | *max_len = BTRFS_FID_SIZE_NON_CONNECTABLE; | ||
| 29 | return 255; | ||
| 30 | } | ||
| 27 | 31 | ||
| 28 | len = BTRFS_FID_SIZE_NON_CONNECTABLE; | 32 | len = BTRFS_FID_SIZE_NON_CONNECTABLE; |
| 29 | type = FILEID_BTRFS_WITHOUT_PARENT; | 33 | type = FILEID_BTRFS_WITHOUT_PARENT; |
| @@ -171,6 +175,8 @@ static struct dentry *btrfs_get_parent(struct dentry *child) | |||
| 171 | int ret; | 175 | int ret; |
| 172 | 176 | ||
| 173 | path = btrfs_alloc_path(); | 177 | path = btrfs_alloc_path(); |
| 178 | if (!path) | ||
| 179 | return ERR_PTR(-ENOMEM); | ||
| 174 | 180 | ||
| 175 | if (dir->i_ino == BTRFS_FIRST_FREE_OBJECTID) { | 181 | if (dir->i_ino == BTRFS_FIRST_FREE_OBJECTID) { |
| 176 | key.objectid = root->root_key.objectid; | 182 | key.objectid = root->root_key.objectid; |
