Ключевые слова:patch, linux, scsi, (найти похожие документы)
_ RU.LINUX (2:5077/15.22) ___________________________________________ RU.LINUX _
From : Alex Korchmar 2:5020/128 24 Sep 98 03:19:00
Subj : Re: GNU software
________________________________________________________________________________
From: alx@corbina.net (Alex Korchmar)
Anton Petrusevich <Anton.Petrusevich@p29.f16.n5004.z2.fidonet.org> wrote:
a>> выключил пару раз внешний дисковод, потом восстановил /, выматерился и
a>> пошел патч писать. Владельцы барракуд с двухгиговым кэшем при удачных
a>> обстоятельствах тоже могут налететь на эти грабли. (им этот патчик не
a>> поможет)
AP> А мэинтейнеры чего говорят? Или не признают баг?
я же говорю - "некрасивый патч". В смысле, я вляпал его туда, где было
меньше мороки, а не туда, куда на самом деле надо.
Если кто-то желает все же допинать эту историю до победного конца - флаг в
руки.
Собственно, вот оно, три строчки:
*** linux-2.0.34/drivers/scsi/sd.c Tue Jun 9 00:52:54 1998
- --- linux/drivers/scsi/sd.c Tue Jun 9 13:57:36 1998
***************
*** 148,153 ****
- --- 148,157 ----
static void sd_release(struct inode * inode, struct file * file)
{
int target;
+ struct sdata {
+ int inlen, outlen;
+ char cmd[19];
+ } scsi_cmd;
fsync_dev(inode->i_rdev);
target = DEVICE_NR(inode->i_rdev);
***************
*** 157,165 ****
(*rscsi_disks[target].device->host->hostt->usage_count)--;
if(sd_template.usage_count) (*sd_template.usage_count)--;
! if(rscsi_disks[target].device->removable) {
! if(!rscsi_disks[target].device->access_count)
! sd_ioctl(inode, NULL, SCSI_IOCTL_DOORUNLOCK, 0);
}
}
- --- 161,175 ----
(*rscsi_disks[target].device->host->hostt->usage_count)--;
if(sd_template.usage_count) (*sd_template.usage_count)--;
! if(!rscsi_disks[target].device->access_count) {
!
! scsi_cmd.inlen=scsi_cmd.outlen=0;
! scsi_cmd.cmd[0]=SYNCHRONIZE_CACHE;
! memset(scsi_cmd.cmd+1, 0, 18);
! sd_ioctl(inode, NULL, SCSI_IOCTL_SEND_COMMAND, (int)(&scsi_cmd)); /*
you can safely turn off external device */
!
! if(rscsi_disks[target].device->removable)
! sd_ioctl(inode, NULL, SCSI_IOCTL_DOORUNLOCK, 0);
}
}
> Alex
--- ifmail v.2.10dev * Origin: Corbina Co. News server (2:5020/128@fidonet)