Re: vfs_writev() returns -EIO, although no errors are returned from the underlying device

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Tue 13-03-12 22:09:22, Alexander Lyakas wrote:
> Greetings all,
> I apologize if my question should not have been posted to this list.
> 
> I am working with code that issues vfs_writev() to a fd, which was
> opened using filp_open(). The pathname, which has been opened, is a
> DeviceMapper devnode (like /dev/dm-1), which is a linear DeviceMapper
> mapped to a local drive.
> 
> At some point, I switch the DeviceMapper to "error" table (using
> "dmsetup reload" and then "dmsetup resume"). As expected,
> vfs_writev() starts returning -EIO.
> 
> Then later, I switch the DeviceMapper back to "linear" table mapped to
> the same local drive. However, the vfs_writev() still returns -EIO
> several times, before it starts completing successfully. If do a
> direct IO at this point to the DM device (like dd if=/dev/urandom
> of=/dev/dm-1 oflag=direct), I don't hit any IO errors. I also added
> some prints to dm-linear code, and verified that it does not return
> any IO errors at this point. So it seems that the VFS layer somehow
> "remembers" that previously there were IO errors from that device.
> 
> I started digging in the kernel code to get some clue on this, but at
> this point I only saw functions like make_bad_inode() and
> is_bad_inode(), which may be relevant somehow, but I was not able to
> trace where the -EIO is returned from.
  Hmm, the only significant difference I can think of is that your buffered
writes (vfs_writev()) would go through blkdev_write_begin() ->
block_write_begin() which could return EIO if it's not able to read in rest
of the page (if you are not writing full page-sized blocks). So I'd have a
look at block_write_begin() and see what it returns...


> Can someone pls point me which code I should look at to debug this
> issue. I am running kernel 2.6.38-8 (stock ubuntu natty). Any clue is
> appreciated.

								Honza
-- 
Jan Kara <jack@xxxxxxx>
SUSE Labs, CR
--
To unsubscribe from this list: send the line "unsubscribe linux-fsdevel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[Index of Archives]     [Linux Ext4 Filesystem]     [Union Filesystem]     [Filesystem Testing]     [Ceph Users]     [Ecryptfs]     [AutoFS]     [Kernel Newbies]     [Share Photos]     [Security]     [Netfilter]     [Bugtraq]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux Cachefs]     [Reiser Filesystem]     [Linux RAID]     [Samba]     [Device Mapper]     [CEPH Development]
  Powered by Linux