On 8/29/13 10:24 PM, Chris Murphy wrote: > > On Aug 29, 2013, at 9:19 PM, Eric Sandeen <sandeen@xxxxxxxxxxx> wrote: >> >> Argh sorry, how did I type THAT? >> >> # blockdev --getiomin --getioopt /dev/mapper/vg1-data > > conventional LV: > [root@f19s ~]# blockdev --getiomin --getioopt /dev/mapper/vg1-data > 512 > 0 > > thinp LV: > > [root@f19s ~]# blockdev --getiomin --getioopt /dev/mapper/vg1-data > 512 > 262144 > > (Now I see two ways to get the same info.) :) ok so it says the stripe unit (minimum IO size) is 512... Around line 2240, it does: if (dsunit && !(BBTOB(dsunit) % blocksize) && dswidth && !(BBTOB(dswidth) % blocksize)) { ... } else { if (nodsflag) dsunit = dswidth = 0; essentially saying: If we autodetected a stripe unit or stripe width which is not a multiple of the block size, silently set it to 0. So we do that. However, _just_ before this, we did: calc_default_ag_geometry(blocklog, dblocks, dsunit | dswidth, &agsize, &agcount); when dsunit & dswidth were still set (to invalid values). So we calculated it w/ stripe geom set, got more AGs, then zeroed out the stripe geom. I'm ... not sure how many bugs are here. ;) We shouldn't calculate AG geometry until we've validated sunit/swidth, I think. But I'm not convinced that dm-thinp's exported values make a lot of sense either. -Eric > > Chris Murphy > _______________________________________________ xfs mailing list xfs@xxxxxxxxxxx http://oss.sgi.com/mailman/listinfo/xfs