Re: MD Raid1, ext4 and write same

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

 



I can confirm the same issue with 3.7.0.  If anyone else is running with 
raid1 and disks that support write same, can you give this a try? 

Thanks,

-- Joe

On Mon, 10 Dec 2012, Joe Lawrence wrote:

> Hi all,
> 
> I have run into an issue running MD Raid 1 with 3.7rc7 and trying to 
> mount a newly created ext4 FS.  It seems that the act of mounting ext4 
> (among other FS operations I imagine) is creating WRITE SAME cmds that I 
> don't believe MD currently supports.
> 
> Find my config setup below, along with repro steps and potential analysis.  
> Perhaps I'm doing something wrong, but everything leads me to believe that 
> MD is not properly handling these commands as passed down from the block 
> layer.  The result are plain WRITE cmds that result in the driver claiming 
> adapter status of MPI2_IOCSTATUS_INVALID_SGL (invalid scatter gather list 
> I presume?).
> 
> Setup: 
> * Fedora 17
> * Kernel version: 3.7.0-rc7
> * mdadm version: mdadm - v3.2.6 - 25th October 2012
> * LSISAS2008: FWVersion(12.00.00.00), ChipRevision(0x03), 
> BiosVersion(07.23.01.00)
> 
> Repro:
> Create a RAID1 pair with an internal bitmap between two SAS disk 
> partitions.  Create an ext4 filesystem, then mount it.
> 
> mdadm --verbose --create /dev/md105 --bitmap=internal --level=1 \
>       --raid-devices=2 /dev/sdr1 /dev/sdu1
> mkfs.ext4 /dev/md105
> mount /dev/md105 /mnt/md105
> 
> Immediately after mounting (the initial mount), the message log reports:
> 
> EXT4-fs (md105): mounted filesystem with ordered data mode. Opts: (null)
> sd 2:0:1:0: [sdu] Unhandled error code
> sd 2:0:1:0: [sdu]  
> Result: hostbyte=DID_SOFT_ERROR driverbyte=DRIVER_OK
> sd 2:0:1:0: [sdu] CDB: 
> Write(10): 2a 00 00 04 39 08 00 10 00 00
> end_request: I/O error, dev sdu, sector 276744
> sd 1:0:1:0: [sdr] Unhandled error code
> sd 1:0:1:0: [sdr]  
> Result: hostbyte=DID_SOFT_ERROR driverbyte=DRIVER_OK
> sd 1:0:1:0: [sdr] CDB: 
> Write(10): 2a 00 00 04 39 08 00 10 00 00
> end_request: I/O error, dev sdr, sector 276744
> md/raid1:md105: Disk failure on sdr1, disabling device.
> md/raid1:md105: Operation continuing on 1 devices.
> md105: WRITE SAME failed. Manually zeroing.
> sd 2:0:1:0: [sdu] Unhandled error code
> sd 2:0:1:0: [sdu]  
> Result: hostbyte=DID_SOFT_ERROR driverbyte=DRIVER_OK
> sd 2:0:1:0: [sdu] CDB: 
> Write(10): 2a 00 00 04 49 08 00 10 00 00
> end_request: I/O error, dev sdu, sector 280840
> md105: WRITE SAME failed. Manually zeroing.
> sd 2:0:1:0: [sdu] Unhandled error code
> sd 2:0:1:0: [sdu]  
> Result: hostbyte=DID_SOFT_ERROR driverbyte=DRIVER_OK
> sd 2:0:1:0: [sdu] CDB: 
> Write(10): 2a 00 00 04 59 08 00 10 00 00
> end_request: I/O error, dev sdu, sector 284936
> md105: WRITE SAME failed. Manually zeroing.
> 
> (mpt2sas log_info msgs trimmed.)
> 
> 
> Relevent Commit History:
> 
> * block: Implement support for WRITE SAME
> commit 4363ac7c13a9a4b763c6e8d9fdbfc2468f3b8ca4
> 
> Adds lim->max_write_same_sectors = UINT_MAX; to blk_set_stacking_limits()
>   Called by drivers/md/md.c :: md_alloc()
> 
> Adds max_write_same_sectors limit check in blk_set_stacking_limits()
>   Called by drivers/md/raid1.c :: raid1_add_disk(), run()
> 
> The net effect is the max_write_same_sectors limit associated with the MD 
> device is the minimum of its component block devices. (In my case, both
> component disks, 
> /sys/block/sdX/device/scsi_disk/W:X:Y:Z/max_write_same_blocks report 
> 65536.)
> 
> 
> * block: Make blkdev_issue_zeroout use WRITE SAME
> commit 579e8f3c7b2ecf7db91398d942d76457a3ddba21
> 
> Adds a wrapper around blkdev_issue_zeroout() to create a WRITE SAME 
> cmd if the block device's request queue limits max_write_same_sectors > 0.
>   Called by ext4_init_inode_table during initial MD Raid1 ext4 mount.
> 
> In combination with the previous commit, ext4_init_inode_table will fire 
> off WRITE SAME cmds, highlighting MD Raid1 non-support for this command.
> 
> 
> I did try a potential fix that I will post seperately that zeroes out the 
> max_write_same_sectors for the MD device before merging the component 
> limits.  With that in place I could mount / copy / read with no issues.
> 
> Regards,
> 
> -- Joe
> 
--
To unsubscribe from this list: send the line "unsubscribe linux-raid" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[Index of Archives]     [Linux RAID Wiki]     [ATA RAID]     [Linux SCSI Target Infrastructure]     [Linux Block]     [Linux IDE]     [Linux SCSI]     [Linux Hams]     [Device Mapper]     [Device Mapper Cryptographics]     [Kernel]     [Linux Admin]     [Linux Net]     [GFS]     [RPM]     [git]     [Yosemite Forum]


  Powered by Linux