[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <1273766778.4353.200.camel@mulgrave.site>
Date: Thu, 13 May 2010 11:06:18 -0500
From: James Bottomley <James.Bottomley@...e.de>
To: Tejun Heo <tj@...nel.org>
Cc: jeff@...zik.org, linux-ide@...r.kernel.org, jens.axboe@...cle.com,
linux-scsi@...r.kernel.org, linux-kernel@...r.kernel.org,
ben@...adent.org.uk
Subject: Re: [PATCHSET] libata: implement ->set_capacity()
On Thu, 2010-05-13 at 17:56 +0200, Tejun Heo wrote:
> Hello, Jens, James, Jeff,
>
> This patchset implements ->set_capacity() in libata so that HPA can be
> unlocked on demand.
>
> 0001-block-restart-partition-scan-after-resizing-a-device.patch
> 0002-SCSI-implement-sd_set_capacity.patch
> 0003-libata-use-the-enlarged-capacity-after-late-HPA-unlo.patch
> 0004-libata-implement-on-demand-HPA-unlocking.patch
>
> 0001 makes partition scan code to restart after ->set_capacity().
> This makes sure that partitions which start beyond the HPA limit are
> discovered.
>
> 0002 implements ->set_capacity() in sd.
>
> 0003 makes libata accept device capacity larger than the initial one.
>
> 0004 implements ->set_capacity() in libata which asks libata EH to
> unlock HPA, waits and returns the new capacity.
>
> Ben Hutchings suggeseted implementing ->set_capacity() in libata and
> also reported the bug in the current partition scan code where it
> fails to discover partitions which start beyond the HPA limit.
>
> Unlocking HPA on-demand seems to be the safest default way to deal
> with HPA. Leaving HPA alone by default could fail to detect or
> truncate existing partitions while unlocking by default make it more
> prone to obscure data corruptions when combined with BIOSes beliving
> that they exclusively own the area beyond HPA limit.
>
> 0001 should be routed through the block tree. 0002 should go through
> SCSI but given the dependency and that libata is the only user, it
> would probably much easier to route it through libata-dev#upstream
> together with 0003 and 0004.
I'm not sure this is such a good interface ... it sounds very error
prone for what is effectively a binary lock/unlock. Instead of just
saying unlock the HPA and show me the new capacity (with a rescan), you
have to echo the right number of sectors to the set_capacity variable.
Isn't a hpa_unlock libata specific attribute better (you could even call
BLKRRPART from the user context of the write)?
James
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@...r.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/
Powered by blists - more mailing lists