回写失败的处理:Handle_write_error

这个函数处理处理writepage的返回值,writepage函数调用文件系统写入的函数,然后返回写入的状态。通过内核源码的查看:

  res = mapping->a_ops->writepage(page, &wbc);
  if (res < 0)
			handle_write_error(mapping, page, res);
		if (res == WRITEPAGE_ACTIVATE) {
			ClearPageReclaim(page);
			return PAGE_ACTIVATE;
		}
		if (!PageWriteback(page)) {
			/* synchronous write or broken a_ops? */
			ClearPageReclaim(page);
		}

如下是handle_write_error函数:

 lock_page(page);
 	if (page_mapping(page) == mapping) {
		if (error == -ENOSPC)
			set_bit(AS_ENOSPC, &mapping->flags);
		else
			set_bit(AS_EIO, &mapping->flags);
	}
	unlock_page(page);

从这里我们接收到一个错误:ENOSPC no space没有空间

AS_EIO  一个写入错误

假设写入错误有以下情况:磁盘离线,磁盘线路中断等等。但是我们回顾到上面,当我们发现IO写入异常,我们什么也没有做,只是简单做了PageWriteback是否是写入的检查,如果不写入,那这个页是否可以被释放,显然,没有。

如果页既不能够写入,也没有被释放,那就是永久不能够被系统回收利用,这就会导致物理内存耗尽,导致系统崩溃的异常。

时间: 2024-12-16 11:31:35

回写失败的处理:Handle_write_error的相关文章

wangEditor2版本 上传图片成功 回显失败处理

使用 wangEditor2 来做文本编辑器 主要给业务人员上传图片 后面又业务人员反映 上传图片  图片没有办法显示 第一次判断为是上传出错  导致图片回显失败查看IP 发现有onload 方法,调用后发现 写这个方法 会吧原来的整体覆盖 而我只需要增加失败提示 则在onloadf方法下 添加一下代码 多传一个function 做自己的请求提示 fns.myOnload&&fns.myOnload(resultText) 后来业务人员反映 还是会出现这个问题  主要操作 先上传9张图片

非周一回写销售预测

需求:系统是每周一回写销售预测,周二到周日不跑,因服务器问题周一没有跑销售预测,周二需补回写销售预测数据 程序修改: 存储过程SAP_FORCAST_STOCK中限制了,如下图: 周二需要跑预测,则将2删除掉便可

rabbitMQ的简单实例——amqp协议带数据回写机制

rabbitMQ是一种高性能的消息队列,支持或者说它实现了AMQP协议(advanced message queue protocol高级消息队列协议). 下面简单讲一讲一个小例子.我们首先要部署好rabbitMQ,然后实现一个生产者—消费者,生产者向rabbit中发布一个消息,消费者去rabbit取这个消息,在正确收到这个消息后,消费者会通过返回队列回写通知生产者自己收到了消息. windows下部署rabbit非常简单,先安装erlang运行时,然后安装rabbitMQ安装文件即可,都是ex

linux块设备的IO调度算法和回写机制

************************************************************************************** 參考: <Linux内核设计与实现> http://laokaddk.blog.51cto.com/368606/699028/ http://www.cnblogs.com/zhenjing/archive/2012/06/20/linux_writeback.html *************************

回写、套接字socket 、JVM映像、实际/抽象回话

1.什么是回写? 回写:更新多维数据集单元值.成员或成员属性值. 操作系统和平台上的应用程序在运行的时候需要往磁盘写入临时数据,但是在无盘环境下,没有硬盘作为操作系统和应用程序临时的交换数据空间,所以这个任务必须交给服务器来完成 计算机回写:“Write Back(回写),在回写状态下,数据只有在要被从高速缓存中清除时才写到磁盘上.随着主存读取的数据增加,回写需要开始从高速缓存中向磁盘上写数据,并把更新的数据写入高速缓存中.由于一个数据可能会被写入高速缓存中许多次,而没有进行磁盘存取,所以回写的

JMeter学习笔记--使用URL回写来处理用户会话

如果测试的Web应用系统使用URL回写而非Cookie来保存会话信息,那么测试人员需要做一些额外的工作来测试web站点 为了正确回应URL回写,JMeter需要解析从服务器收到的HTML,并得到唯一的会话ID.测试人员需要使用合适的HTTP URL回写修改器来完成这一点.测试人员只需简单地讲会话ID参数的名称放入修改器中,修改器就会找到会话ID,并将其放入每个请求之中.如果请求之中已经有了会话ID,那么它就会被替换掉.如果选中了“Cache Session ID?"选项,那么最近一个被找到的会话

归并排序 非递归 不回写

#include<iostream>using namespace std;void Merge(int a[],int b[],int first,int mid,int last)//合并两个有序数组{ int p=first,q=mid+1; int pos=first; while(p<=mid&&q<=last) { if(a[p]<a[q]) { b[pos++]=a[p++]; } else { b[pos++]=a[q++]; } } if(p

基于JQuery实现表单元素值的回写

form.jsp: <%@ page language="java" import="java.util.*" pageEncoding="GB2312"%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html &

嵌套JSON数据自动回写HTML网页

本文介绍解析来自MongoDB数据库的JSON嵌套字符串,按HTML界面元素自定义属性展现数据内容的解决方案及技术实现代码. HTML网页定义 <html> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <head></head> <body> <h1>表单展示数据回写测试 JavaScript</h