[Bugs] [Bug 1505721] open on a file fails with ENOENT instead of EIO

bugzilla at redhat.com bugzilla at redhat.com
Tue Oct 24 12:16:18 UTC 2017


https://bugzilla.redhat.com/show_bug.cgi?id=1505721

Pranith Kumar K <pkarampu at redhat.com> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |rgowdapp at redhat.com
              Flags|                            |needinfo?(rgowdapp at redhat.c
                   |                            |om)



--- Comment #1 from Pranith Kumar K <pkarampu at redhat.com> ---
I have my doubts on: we_are_not_migrating() macro, this is the output from gdb
session.

Thread 8 "glusterepoll1" hit Breakpoint 1, dht_open_cbk (frame=0x7f1720001768,
cookie=0x7f172400eb30, this=0x7f1724010520, op_ret=-1, op_errno=5, fd=0x0,
xdata=0x0) at dht-inode-read.c:34
34            dht_local_t  *local = NULL;
(gdb) l
29    
30    int
31    dht_open_cbk (call_frame_t *frame, void *cookie, xlator_t *this,
32                  int op_ret, int op_errno, fd_t *fd, dict_t *xdata)
33    {
34            dht_local_t  *local = NULL;
35            xlator_t     *prev = NULL;
36            int           ret = 0;
37    
38            local = frame->local;
(gdb) 
39            prev = cookie;
40    
41            local->op_errno = op_errno;
42            if ((op_ret == -1) && !dht_inode_missing(op_errno)) {
43                    gf_msg_debug (this->name, op_errno,
44                                  "subvolume %s returned -1",
45                                  prev->name);
46                    goto out;
47            }
48    
(gdb) 
49            /* Update ctx if the fd has been opened on the target*/
50            if (!op_ret && (local->call_cnt == 1)) {
51                    dht_fd_ctx_set (this, fd, prev);
52                    goto out;
53            }
54    
55            if (!op_ret || (local->call_cnt != 1))
56                    goto out;
57    
58            /* rebalance would have happened */
(gdb) 
59            local->rebalance.target_op_fn = dht_open2;
60            ret = dht_rebalance_complete_check (this, frame);
61            if (!ret)
62                    return 0;
63    
64    out:
65            DHT_STACK_UNWIND (open, frame, op_ret, op_errno, local->fd,
xdata);
66    
67            return 0;
68    }
(gdb) b dht_rebalance_complete_check
Breakpoint 2 at 0x7f172b0e5b02: file dht-helper.c, line 1520.
(gdb) c
Continuing.

Thread 8 "glusterepoll1" hit Breakpoint 2, dht_rebalance_complete_check
(this=0x7f1724010520, frame=0x7f1720001768) at dht-helper.c:1520
1520            int         ret     = -1;

(gdb) b dht_migration_complete_check_task
Breakpoint 3 at 0x7f172b0e5187: file dht-helper.c, line 1290.
(gdb) b dht_migration_complete_check_done
Breakpoint 4 at 0x7f172b0e50ef: file dht-helper.c, line 1265.
(gdb) c
Continuing.
[Switching to Thread 0x7f172d15c700 (LWP 28975)]

Thread 6 "glustersproc1" hit Breakpoint 3, dht_migration_complete_check_task
(data=0x7f1720001768) at dht-helper.c:1290
(gdb) b 1498
Breakpoint 5 at 0x7f172b0e5a7a: file dht-helper.c, line 1498.
(gdb) c
Continuing.

Thread 6 "glustersproc1" hit Breakpoint 5, dht_migration_complete_check_task
(data=0x7f1720001768) at dht-helper.c:1498
1498            if (open_failed) {
(gdb) p open_failed 
$1 = 1
(gdb) n
1499                    ret = -1;
(gdb) 
1500                    goto unlock;
(gdb) 
1505            UNLOCK(&inode->lock);
(gdb) 
1508            if (dict) {
(gdb) 
1512            loc_wipe (&tmp_loc);
(gdb) 
1514            return ret;
(gdb) 
1515    }
(gdb) 
synctask_wrap () at syncop.c:376
376            if (task->synccbk)
(gdb) 
377                    task->synccbk (task->ret, task->frame, task->opaque);
(gdb) 

Thread 6 "glustersproc1" hit Breakpoint 4, dht_migration_complete_check_done
(op_ret=-1, frame=0x7f1720001768, data=0x7f1720001768) at dht-helper.c:1265
1265            dht_local_t *local  = NULL;
(gdb) n
1266            xlator_t    *subvol = NULL;
(gdb) 
1268            local = frame->local;
(gdb) 
1270            if (op_ret != 0)
(gdb) 
1271                    goto out;
(gdb) 
1281            local->rebalance.target_op_fn (THIS, subvol, frame, op_ret);
(gdb) s
dht_open2 (this=0x7f1724010520, subvol=0x0, frame=0x7f1720001768, ret=-1) at
dht-inode-read.c:73
73            dht_local_t *local    = NULL;
(gdb) n
74            int          op_errno = EINVAL;
(gdb) 
76            if (!frame || !frame->local)
(gdb) 
79            local = frame->local;
(gdb) 
80            op_errno = ENOENT;
(gdb) 
82            if (we_are_not_migrating (ret)) {
(gdb) n
90            if (subvol == NULL)
(gdb) 
91                    goto out;
(gdb) 
101            DHT_STACK_UNWIND (open, frame, -1, op_errno, NULL, NULL);
(gdb) p op_errno
$3 = 2

-- 
You are receiving this mail because:
You are on the CC list for the bug.
Unsubscribe from this bug https://bugzilla.redhat.com/token.cgi?t=4HNsu1I971&a=cc_unsubscribe


More information about the Bugs mailing list