Loading drivers/staging/dst/dcore.c +23 −0 Original line number Diff line number Diff line Loading @@ -100,10 +100,33 @@ static void dst_node_set_size(struct dst_node *n) static int dst_request(struct request_queue *q, struct bio *bio) { struct dst_node *n = q->queuedata; int err = -EIO; if (bio_empty_barrier(bio) && !q->prepare_discard_fn) { /* * This is a dirty^Wnice hack, but if we complete this * operation with -EOPNOTSUPP like intended, XFS * will stuck and freeze the machine. This may be * not particulary XFS problem though, but it is the * only FS which sends empty barrier at umount time * I worked with. * * Empty barriers are not allowed anyway, see 51fd77bd9f512 * for example, although later it was changed to bio_discard() * only, which does not work in this case. */ //err = -EOPNOTSUPP; err = 0; goto end_io; } bio_get(bio); return dst_process_bio(n, bio); end_io: bio_endio(bio, err); return err; } /* Loading Loading
drivers/staging/dst/dcore.c +23 −0 Original line number Diff line number Diff line Loading @@ -100,10 +100,33 @@ static void dst_node_set_size(struct dst_node *n) static int dst_request(struct request_queue *q, struct bio *bio) { struct dst_node *n = q->queuedata; int err = -EIO; if (bio_empty_barrier(bio) && !q->prepare_discard_fn) { /* * This is a dirty^Wnice hack, but if we complete this * operation with -EOPNOTSUPP like intended, XFS * will stuck and freeze the machine. This may be * not particulary XFS problem though, but it is the * only FS which sends empty barrier at umount time * I worked with. * * Empty barriers are not allowed anyway, see 51fd77bd9f512 * for example, although later it was changed to bio_discard() * only, which does not work in this case. */ //err = -EOPNOTSUPP; err = 0; goto end_io; } bio_get(bio); return dst_process_bio(n, bio); end_io: bio_endio(bio, err); return err; } /* Loading