Skip to content

Commit 264780c

Browse files
committed
Merge branch 'for-linus' of git://git.kernel.dk/linux-2.6-block
* 'for-linus' of git://git.kernel.dk/linux-2.6-block: ubd: fix incorrect sector handling during request restart ps3disk: passing wrong variable to bvec_kunmap_irq()
2 parents 8fd01d6 + 4752690 commit 264780c

File tree

2 files changed

+6
-5
lines changed

2 files changed

+6
-5
lines changed

arch/um/drivers/ubd_kern.c

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -163,6 +163,7 @@ struct ubd {
163163
struct scatterlist sg[MAX_SG];
164164
struct request *request;
165165
int start_sg, end_sg;
166+
sector_t rq_pos;
166167
};
167168

168169
#define DEFAULT_COW { \
@@ -187,6 +188,7 @@ struct ubd {
187188
.request = NULL, \
188189
.start_sg = 0, \
189190
.end_sg = 0, \
191+
.rq_pos = 0, \
190192
}
191193

192194
/* Protected by ubd_lock */
@@ -1228,7 +1230,6 @@ static void do_ubd_request(struct request_queue *q)
12281230
{
12291231
struct io_thread_req *io_req;
12301232
struct request *req;
1231-
sector_t sector;
12321233
int n;
12331234

12341235
while(1){
@@ -1239,12 +1240,12 @@ static void do_ubd_request(struct request_queue *q)
12391240
return;
12401241

12411242
dev->request = req;
1243+
dev->rq_pos = blk_rq_pos(req);
12421244
dev->start_sg = 0;
12431245
dev->end_sg = blk_rq_map_sg(q, req, dev->sg);
12441246
}
12451247

12461248
req = dev->request;
1247-
sector = blk_rq_pos(req);
12481249
while(dev->start_sg < dev->end_sg){
12491250
struct scatterlist *sg = &dev->sg[dev->start_sg];
12501251

@@ -1256,10 +1257,9 @@ static void do_ubd_request(struct request_queue *q)
12561257
return;
12571258
}
12581259
prepare_request(req, io_req,
1259-
(unsigned long long)sector << 9,
1260+
(unsigned long long)dev->rq_pos << 9,
12601261
sg->offset, sg->length, sg_page(sg));
12611262

1262-
sector += sg->length >> 9;
12631263
n = os_write_file(thread_fd, &io_req,
12641264
sizeof(struct io_thread_req *));
12651265
if(n != sizeof(struct io_thread_req *)){
@@ -1272,6 +1272,7 @@ static void do_ubd_request(struct request_queue *q)
12721272
return;
12731273
}
12741274

1275+
dev->rq_pos += sg->length >> 9;
12751276
dev->start_sg++;
12761277
}
12771278
dev->end_sg = 0;

drivers/block/ps3disk.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -113,7 +113,7 @@ static void ps3disk_scatter_gather(struct ps3_storage_device *dev,
113113
memcpy(buf, dev->bounce_buf+offset, size);
114114
offset += size;
115115
flush_kernel_dcache_page(bvec->bv_page);
116-
bvec_kunmap_irq(bvec, &flags);
116+
bvec_kunmap_irq(buf, &flags);
117117
i++;
118118
}
119119
}

0 commit comments

Comments
 (0)