Possible bug in ata-disk.c
Alexander Motin
mav at FreeBSD.org
Fri Dec 11 16:33:54 UTC 2009
Andriy Gapon wrote:
> on 11/12/2009 16:10 Grzegorz Bernacki said the following:
>> Hi,
>>
>> I've looked over ATA code and I've noticed that setting
>> DISKFLAG_CANDELETE big in disk->d_flags clears DISKFLAGS_CANFLUSHCAHCE
>> bit if it was set. Below is the patch.
>>
>> --- a/sys/dev/ata/ata-disk.c
>> +++ b/sys/dev/ata/ata-disk.c
>> @@ -133,11 +133,11 @@ ad_attach(device_t dev)
>> adp->disk->d_unit = device_get_unit(dev);
>> if (atadev->param.support.command2 & ATA_SUPPORT_FLUSHCACHE)
>> adp->disk->d_flags = DISKFLAG_CANFLUSHCACHE;
>> if ((atadev->param.support.command2 & ATA_SUPPORT_CFA) ||
>> atadev->param.config == ATA_PROTO_CFA)
>> - adp->disk->d_flags |= DISKFLAG_CANDELETE;
>> + adp->disk->d_flags = DISKFLAG_CANDELETE;
>> snprintf(adp->disk->d_ident, sizeof(adp->disk->d_ident), "ad:%s",
>> atadev->param.serial);
>> disk_create(adp->disk, DISK_VERSION);
>> device_add_child(dev, "subdisk", device_get_unit(dev));
>> ad_firmware_geom_adjust(dev, adp->disk);
>
> It seems that you are correct.
> The only confusing thing is that you supplied a reverse diff :)
Thanks. Committed to HEAD.
--
Alexander Motin
More information about the freebsd-current
mailing list