linux-next: manual merge of the ceph tree with Linus' tree

From: Stephen Rothwell
Date: Tue Jan 10 2012 - 20:28:13 EST


Hi Sage,

Today's linux-next merge of the ceph tree got a conflict in
fs/ceph/super.c between commit 3c5184ef1216 ("ceph: d_alloc_root() may
fail") from Linus' tree and commit 26d913cdd955 ("ceph: always initialize
the dentry in open_root_dentry()") from the ceph tree.

I fixed it up (see below) and can carry the fix as necessary.
--
Cheers,
Stephen Rothwell sfr@xxxxxxxxxxxxxxxx

diff --cc fs/ceph/super.c
index 48f61a1,ec74313..0000000
--- a/fs/ceph/super.c
+++ b/fs/ceph/super.c
@@@ -636,21 -636,14 +636,21 @@@ static struct dentry *open_root_dentry(
req->r_num_caps = 2;
err = ceph_mdsc_do_request(mdsc, NULL, req);
if (err == 0) {
+ struct inode *inode = req->r_target_inode;
+ req->r_target_inode = NULL;
dout("open_root_inode success\n");
- if (ceph_ino(req->r_target_inode) == CEPH_INO_ROOT &&
- fsc->sb->s_root == NULL)
- root = d_alloc_root(req->r_target_inode);
- else
- root = d_obtain_alias(req->r_target_inode);
+ if (ceph_ino(inode) == CEPH_INO_ROOT &&
+ fsc->sb->s_root == NULL) {
+ root = d_alloc_root(inode);
+ if (!root) {
+ iput(inode);
+ root = ERR_PTR(-ENOMEM);
+ goto out;
+ }
- ceph_init_dentry(root);
+ } else {
+ root = d_obtain_alias(inode);
+ }
+ ceph_init_dentry(root);
- req->r_target_inode = NULL;
dout("open_root_inode success, root dentry is %p\n", root);
} else {
root = ERR_PTR(err);

Attachment: pgp00000.pgp
Description: PGP signature