--- Gnu-Mach/linux/dev/glue/block.c 2020/09/02 04:45:59 1.1.1.3 +++ Gnu-Mach/linux/dev/glue/block.c 2020/09/02 04:52:48 1.1.1.5 @@ -384,7 +384,7 @@ bread (kdev_t dev, int block, int size) bh = getblk (dev, block, size); if (bh) { - ll_rw_block (READ, 1, &bh); + ll_rw_block (READ, 1, &bh, 0); wait_on_buffer (bh); if (! buffer_uptodate (bh)) { @@ -444,7 +444,7 @@ enqueue_request (struct request *req) /* Perform the I/O operation RW on the buffer list BH containing NR buffers. */ void -ll_rw_block (int rw, int nr, struct buffer_head **bh) +ll_rw_block (int rw, int nr, struct buffer_head **bh, int quiet) { int i, bshift, bsize; unsigned major; @@ -476,6 +476,7 @@ ll_rw_block (int rw, int nr, struct buff r->rq_dev = bh[0]->b_dev; r->cmd = rw; r->errors = 0; + r->quiet = quiet; r->sector = bh[0]->b_blocknr << (bshift - 9); r->current_nr_sectors = bh[0]->b_size >> 9; r->buffer = bh[0]->b_data; @@ -528,7 +529,7 @@ rdwr_partial (int rw, kdev_t dev, loff_t bh->b_data = alloc_buffer (bh->b_size); if (! bh->b_data) return -ENOMEM; - ll_rw_block (READ, 1, &bh); + ll_rw_block (READ, 1, &bh, 0); wait_on_buffer (bh); if (buffer_uptodate (bh)) { @@ -542,7 +543,7 @@ rdwr_partial (int rw, kdev_t dev, loff_t { memcpy (bh->b_data + o, *buf, c); bh->b_state = (1 << BH_Dirty) | (1 << BH_Lock); - ll_rw_block (WRITE, 1, &bh); + ll_rw_block (WRITE, 1, &bh, 0); wait_on_buffer (bh); if (! buffer_uptodate (bh)) { @@ -623,7 +624,8 @@ rdwr_full (int rw, kdev_t dev, loff_t *o } if (! err) { - ll_rw_block (rw, i, bhp); + assert (i > 0); + ll_rw_block (rw, i, bhp, 0); wait_on_buffer (bhp[i - 1]); } for (bh = bhead, cc = 0, j = 0; j < i; cc += bh->b_size, bh++, j++) @@ -1155,7 +1157,7 @@ out: { ipc_kobject_set (bd->port, IKO_NULL, IKOT_NONE); ipc_port_dealloc_kernel (bd->port); - *devp = IP_NULL; + *devp = (device_t) IP_NULL; } kfree ((vm_offset_t) bd, sizeof (struct block_data)); bd = NULL; @@ -1659,41 +1661,6 @@ device_get_status (void *d, dev_flavor_t *status_count = DEV_GET_RECORDS_COUNT; break; - case V_GETPARMS: - if (*status_count < (sizeof (struct disk_parms) / sizeof (int))) - return D_INVALID_OPERATION; - else - { - struct disk_parms *dp = status; - struct hd_geometry hg; - DECL_DATA; - - INIT_DATA(); - - if ((*bd->ds->fops->ioctl) (&td.inode, &td.file, - HDIO_GETGEO, (unsigned long)&hg)) - return D_INVALID_OPERATION; - - dp->dp_type = DPT_WINI; /* XXX: It may be a floppy... */ - dp->dp_heads = hg.heads; - dp->dp_cyls = hg.cylinders; - dp->dp_sectors = hg.sectors; - dp->dp_dosheads = hg.heads; - dp->dp_doscyls = hg.cylinders; - dp->dp_dossectors = hg.sectors; - dp->dp_secsiz = 512; /* XXX */ - dp->dp_ptag = 0; - dp->dp_pflag = 0; - - /* XXX */ - dp->dp_pstartsec = -1; - dp->dp_pnumsec = -1; - - *status_count = sizeof (struct disk_parms) / sizeof (int); - } - - break; - default: return D_INVALID_OPERATION; } @@ -1703,7 +1670,7 @@ device_get_status (void *d, dev_flavor_t static io_return_t device_set_status (void *d, dev_flavor_t flavor, dev_status_t status, - mach_msg_type_number_t *status_count) + mach_msg_type_number_t status_count) { struct block_data *bd = d;