Print this page
NEX-3046 hsfs asserts instead of handling getpage beyond EOF
Reviewed by: Kevin Crowe <kevin.crowe@nexenta.com>
Reviewed by: Sanjay Nadkarni <sanjay.nadkarni@nexenta.com>
Reviewed by: Yuri Pankov <yuri.pankov@nexenta.com>
Reviewed by: Marcel Telka <marcel.telka@nexenta.com>
Revert "NEX-5659 hsfs asserts instead of handling getpage beyond EOF"
This reverts commit c4b53e5f3fdfec5d117f9719bc4b77581f318442.
NEX-5659 hsfs asserts instead of handling getpage beyond EOF
Reviewed by: Kevin Crowe <kevin.crowe@nexenta.com>
Reviewed by: Sanjay Nadkarni <sanjay.nadkarni@nexenta.com>
Reviewed by: Yuri Pankov <yuri.pankov@nexenta.com>
Reviewed by: Marcel Telka <marcel.telka@nexenta.com>
NEX-2974 cannot exec from hsfs since illumos 5405
@@ -20,11 +20,11 @@
*/
/*
* Copyright 2009 Sun Microsystems, Inc. All rights reserved.
* Use is subject to license terms.
- * Copyright 2015 Nexenta Systems, Inc. All rights reserved.
+ * Copyright 2016 Nexenta Systems, Inc. All rights reserved.
* Copyright (c) 2017 by Delphix. All rights reserved.
*/
/*
* Vnode operations for the High Sierra filesystem
@@ -1159,10 +1159,12 @@
* Need to really do disk IO to get the page.
*/
if (!calcdone) {
extension += hp->hs_ra_bytes;
+ len = (extension != 0) ? extension : PAGESIZE;
+
/*
* Some cd writers don't write sectors that aren't
* used. Also, there's no point in reading sectors
* we'll never look at. So, if we're asked to go
* beyond the end of a file, truncate to the length
@@ -1169,20 +1171,16 @@
* of that file.
*
* Additionally, this behaviour is required by section
* 6.4.5 of ISO 9660:1988(E).
*/
- len = MIN(extension ? extension : PAGESIZE,
- filsiz - off);
+ if (off < filsiz && off + len > filsiz)
+ len = filsiz - off;
- /* A little paranoia. */
- ASSERT(len > 0);
-
/*
* After all that, make sure we're asking for things
- * in units that bdev_strategy() will understand
- * (see bug 4202551).
+ * in units that bdev_strategy() will understand.
*/
len = roundup(len, DEV_BSIZE);
calcdone = 1;
}