path->leave_spinning = 1;
        di = btrfs_lookup_dir_item(trans, root, path, dir_ino,
                                    name, name_len, -1);
-       if (IS_ERR(di)) {
-               ret = PTR_ERR(di);
-               goto err;
-       }
-       if (!di) {
-               ret = -ENOENT;
+       if (IS_ERR_OR_NULL(di)) {
+               ret = di ? PTR_ERR(di) : -ENOENT;
                goto err;
        }
        leaf = path->nodes[0];
        di = btrfs_lookup_dir_item(trans, root, path, dir_ino,
                                   name, name_len, -1);
        if (IS_ERR_OR_NULL(di)) {
-               if (!di)
-                       ret = -ENOENT;
-               else
-                       ret = PTR_ERR(di);
+               ret = di ? PTR_ERR(di) : -ENOENT;
                goto out;
        }
 
 
        di = btrfs_lookup_dir_item(NULL, root, path, btrfs_ino(BTRFS_I(dir)),
                        name, namelen, 0);
-       if (!di) {
-               ret = -ENOENT;
-               goto out;
-       }
-       if (IS_ERR(di)) {
-               ret = PTR_ERR(di);
+       if (IS_ERR_OR_NULL(di)) {
+               ret = di ? PTR_ERR(di) : -ENOENT;
                goto out;
        }
 
 
 
        di = btrfs_lookup_dir_item(NULL, root, path,
                        dir, name, name_len, 0);
-       if (!di) {
-               ret = -ENOENT;
-               goto out;
-       }
-       if (IS_ERR(di)) {
-               ret = PTR_ERR(di);
+       if (IS_ERR_OR_NULL(di)) {
+               ret = di ? PTR_ERR(di) : -ENOENT;
                goto out;
        }
        btrfs_dir_item_key_to_cpu(path->nodes[0], di, &key);