Print this page
3515 sd gives RMW warnings for reads
Reviewed by: Albert Lee <trisk@nexenta.com>
Reviewed by: Kevin Crowe <kevin.crowe@nexenta.com>
Reviewed by: Gordon Ross <gordon.ross@nexenta.com>
*** 21,33 ****
/*
* Copyright (c) 1990, 2010, Oracle and/or its affiliates. All rights reserved.
*/
/*
- * Copyright 2011 Nexenta Systems, Inc. All rights reserved.
* Copyright (c) 2011 Bayard G. Bell. All rights reserved.
* Copyright (c) 2012 by Delphix. All rights reserved.
*/
/*
* Copyright 2011 cyril.galibern@opensvc.com
*/
--- 21,33 ----
/*
* Copyright (c) 1990, 2010, Oracle and/or its affiliates. All rights reserved.
*/
/*
* Copyright (c) 2011 Bayard G. Bell. All rights reserved.
* Copyright (c) 2012 by Delphix. All rights reserved.
+ * Copyright 2013 Nexenta Systems, Inc. All rights reserved.
*/
/*
* Copyright 2011 cyril.galibern@opensvc.com
*/
*** 12645,12664 ****
* number.
*/
if (is_aligned) {
xp->xb_blkno = SD_SYS2TGTBLOCK(un, xp->xb_blkno);
} else {
! switch (un->un_f_rmw_type) {
! case SD_RMW_TYPE_RETURN_ERROR:
! if (un->un_f_enable_rmw)
! break;
! else {
bp->b_flags |= B_ERROR;
goto error_exit;
! }
!
! case SD_RMW_TYPE_DEFAULT:
mutex_enter(SD_MUTEX(un));
if (!un->un_f_enable_rmw &&
un->un_rmw_msg_timeid == NULL) {
scsi_log(SD_DEVINFO(un), sd_label,
CE_WARN, "I/O request is not "
--- 12645,12665 ----
* number.
*/
if (is_aligned) {
xp->xb_blkno = SD_SYS2TGTBLOCK(un, xp->xb_blkno);
} else {
! /*
! * There is no RMW if we're just reading, so don't
! * warn or error out because of it.
! */
! if (bp->b_flags & B_READ) {
! /*EMPTY*/
! } else if (!un->un_f_enable_rmw &&
! un->un_f_rmw_type == SD_RMW_TYPE_RETURN_ERROR) {
bp->b_flags |= B_ERROR;
goto error_exit;
! } else if (un->un_f_rmw_type == SD_RMW_TYPE_DEFAULT) {
mutex_enter(SD_MUTEX(un));
if (!un->un_f_enable_rmw &&
un->un_rmw_msg_timeid == NULL) {
scsi_log(SD_DEVINFO(un), sd_label,
CE_WARN, "I/O request is not "
*** 12672,12686 ****
un, SD_RMW_MSG_PRINT_TIMEOUT);
} else {
un->un_rmw_incre_count ++;
}
mutex_exit(SD_MUTEX(un));
- break;
-
- case SD_RMW_TYPE_NO_WARNING:
- default:
- break;
}
nblocks = SD_TGT2SYSBLOCK(un, nblocks);
partition_offset = SD_TGT2SYSBLOCK(un,
partition_offset);
--- 12673,12682 ----